package events;

import java.util.List;
import java.util.ArrayList;

import events.event.Event;

public class EventDispatcher implements IEventDispatcher {
  
  // Kolekcja przechowująca obiekty, które zostały dodane do listy powiadomień
  private List<IEventListener> eventListeners = new ArrayList<IEventListener>();
  
  @Override
  public void addEventListener(IEventListener eventListener) {
    if (!eventListeners.contains(eventListener))  // dodaj do listy, jeśli wcześniej nie został dodany
      eventListeners.add(eventListener);
  }

  @Override
  public void removeEventListener(IEventListener eventListener) {
    eventListeners.remove(eventListener); // usuń z listy
  }

  @Override
  public void dispatchEvent(Event event) {
    for (IEventListener eventListener : eventListeners) { // dla wszystkich obiektów z listy...
      eventListener.executeEvent(event); // ...wywołaj metodę executeEvent()
    }
    
  }

}
